"""实现用户信息管理系统，从userInfo.json读取用户数据并进行封装"""

import json


"""根据json的信息设计用户的结构，比如属性，编写魔术方法str方便输出用户对象信息，使用json模块读取用户信息json文件，封装好信息对象
以users为key，values是一个用户对象数组，遍历对象数组，单独拿出他们的属性==key，赋值给一个新的对象，然后添加到新的对象列表中，遍历输出"""
class UserInfo:
    def __init__(self, id, username, age, email, phone):
        self.id = id
        self.username = username
        self.age = age
        self.email = email
        self.phone = phone

    def __str__(self):
        """实现__str__魔术方法，用于输出用户基本信息"""
        return f'用户ID：{self.id}\n姓名：{self.username}\n年龄：{self.age}\n邮箱：{self.email}\n电话：{self.phone}\n'


def load_user_data():
    """从userInfo.json文件中读取用户数据"""
    file_path = r"./info/userInfo.json"
    with open(file_path, 'r', encoding='utf-8') as f:
        data = json.load(f)
        return data['users']


def create_user_list(users_data):
    """将JSON数据转换为UserInfo对象列表"""
    user_list = []
    for user_data in users_data:
        user = UserInfo(
            id=user_data['id'],
            username=user_data['username'],
            age=user_data['age'],
            email=user_data['email'],
            phone=user_data['phone']
        )
        user_list.append(user)
    return user_list


if __name__ == '__main__':
    # 读取JSON数据
    users_data = load_user_data()

    # 创建用户对象列表
    user_list = create_user_list(users_data)

    # 遍历输出所有用户信息
    print('所有用户信息：')
    for user in user_list:
        print(user)
